package com.example.experiment_four;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class TelephonyStatus extends Activity {
    ListView showView;
    String[] statusNames;
    ArrayList<String> statusValues = new ArrayList<>();
    TelephonyManager tManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_telephone);
        showView = (ListView) findViewById(R.id.show);

        //①获得系统提供的TelphonyManager对象的实例
        tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);



        //②获得状态名词的数组,Sim卡状态的数组,电话网络类型的数组
        //就是获得array.xml中的相应数组名的值
        statusNames = getResources().getStringArray(R.array.statusNames);
        String[] simState = getResources().getStringArray(R.array.simState);
        String[] phoneType = getResources().getStringArray(R.array.phoneType);




        //③依照array.xml中的顺序,调用相应的方法,将相应的值保存到集合里
        statusValues.add(tManager.getDeviceId());     //获得设备编号
        //获取系统平台的版本号

        statusValues.add(tManager.getDeviceSoftwareVersion()
                != null? tManager.getDeviceSoftwareVersion():"未知");
        statusValues.add(tManager.getNetworkOperator());  //获得网络运营商代号
        statusValues.add(tManager.getNetworkOperatorName()); //获得网络运营商的名称
        statusValues.add(phoneType[tManager.getPhoneType()]); //获得手机的网络类型
        // 获取设备所在位置
        statusValues.add(tManager.getCellLocation() != null ? tManager
                .getCellLocation().toString() : "未知位置");
        statusValues.add(tManager.getSimCountryIso());      // 获取SIM卡的国别
        statusValues.add(tManager.getSimSerialNumber());    // 获取SIM卡序列号
        statusValues.add(simState[tManager.getSimState()]); // 获取SIM卡状态


        //④遍历状态的集合,把状态名与相应的状态加入到集合中
        ArrayList<Map<String, String>> status =
                new ArrayList<>();
        for (int i = 0; i < statusValues.size(); i++)
        {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("name", statusNames[i]);
            map.put("value", statusValues.get(i));
            status.add(map);
        }
        //⑤使用SimpleAdapter封装List数据
        SimpleAdapter adapter = new SimpleAdapter(this, status,
                R.layout.line, new String[] { "name", "value" }
                , new int[] { R.id.name, R.id.value });
        // 为ListView设置Adapter
        showView.setAdapter(adapter);
    }
}
